7.5 Vymenovaný typ
Takýto typ zadáme tak, že vymenujeme jeho prvky. Z toho aj vznikol jeho názov. Pri vymenovaní prvkov sme dosť obmedzený, používať môžeme totiž iba identifikátory a len také, ktoré ešte neboli použité v programe. Hodnoty uvádzame v zátvorke oddelené od seba čiarkou:
Var | |
| Kvety = (Tulipan, Ruza, Nezabudka, Fialka) ; |
| Tempo = (Pomale, Rychle) ; |
| Jazyky = (Slovencina, Cestina, Madarcina, Anglictina) ; |
| Dni = (Pondelok, Utorok, Streda, Stvrtok, Piatok, Sobota, Nedela) ; |
Použité identifikátory musia spĺňať všeobecné podmienky pre tvorbu identifikátorov, musia byť jedinečné - nikde sa nemôžu opakovať, nemôžu obsahovať diakritické písmená atď.
Nesprávne je napr.:
Var | |
| Zvierata = (Pes, Macka, Lev, Medved) ; |
| Domace_Zvierata = (Pes, Macka) ; { opakuje sa Pes a Macka } |
Ak počet prvkov v zozname je menej než 256, potom zaberajú 1 Byte v pamäti. Prvý zo zoznamu má poradové číslo 0, druhý má 1, atď. Sú usporiadané a teda majú ordinárny typ a môžeme použiť funkcie Inc, Ord, Succ a Pred. Dajú sa porovnávať medzi sebou. Menší je ten, ktorý má menšie poradové číslo.
| Kvety := Tulipan ; Inc(Kvety) ; { premenná Kvety bude Ruza } |
| Den := Piatok ; Dec(Den) ; { premenná Den bude Stvrtok } |
| Ord(Nezabudka) = 2 |
| Succ(Pondelok) = Utorok |
| Pred(Utorok) = Pondelok |
| Tulipan < Fialka |
| Piatok < Sobota |
Typ Boolean je tiež špeciálnym vymenovaným typom:
Var | Logicke = (False, True) ; |
Prvky vymenovaného typu nemôžeme ani načítať (pomocou Read) ani vypísať (pomocou príkazu Write)!
Tento typ je Pascalovskou záležitosťou. Pomocou neho sa dajú inokedy dosiahnuť veľmi elegantné riešenia.
7.6 Intervalové typy
Programátor určuje, že z existujúcich ordinánych typov (rodičovský typ), aké intervaly použijeme. Interval sa zadáva svojou dolnou a hornou hranicou:
Var | |
| Dlzka_Mesiaca : 28..31 ; |
| Velke_Pismena : 'A'..'Z' ; |
| Cislice : '0'..'9' ; |
| Pracovne_Dni : Pondelok..Piatok ; |
- Dlzka_Mesiaca je intervalovým podtypom typu Byte.
- Velke_Pismena a Cislice sú intervalovými podtypmi typu Char.
- Pracovne_Dni je intervalovým podtypom vymenovaného typu Dni, ktorý sme uviedli v predchádzajúcom paragrafe.
Môžeme prekladaču zadať aby overoval kompatibilitu premenných z jednotlivých typov. Program bude dlhší, ale nebude prijímať hodnoty mimo svoj definičný obor. Ak zadáme inú hodnotu - program zhavaruje a vypíše: Range check error. Túto kontrolu určíme pomocou nasledujúceho príkazu pre prekladač:
{$R+} | |
Program P ; | |
Var | |
| Dlzka_Mesiaca : 28..31 ; |
| I : Byte ; |
... | |
| Dlzka_Mesiaca := 27; { chyba pri preklade - Constant out of Range } |
| I := 27 ; |
| Dlzka_Mesiaca := I ; { pri preklade OK, pri behu program havaruje } |
Pri testovaní sa vždy doporučuje prekladať náš program s direktívou R+. Ak už program bude pracovať spoľahlivo, môžeme túto direktívu ubrať. Základné definície direktív pre prekladač sa určujú v zložke Option/Compiler Options a budú sa chápať ako preddefinované. Ak ich budeme chcieť dočasne zmeniť, budeme musieť tieto definície uviesť v našom programe.
7.7 Definícia konštánt
V deklaračnej časti programu môžeme definovať aj vlastné konštanty pomocou služobného slova CONST. Každá konštanta má svoj identifikátor a svoju hodnotu, ktorá sa počas programu nemení.
Const | |
| Rok = 2001 ; |
| Urok = 24 ; |
| Dobra_Odpoved = 'A' ; |
Identifikátor a hodnotu oddeľujeme znakom rovná sa (=). Typ konštanty je jednoznačne určený jej hodnotou. Má to niekoľko výhod, pri zmene hodnoty konštanty stačí ju zmeniť iba na jednom mieste v programe, v prípade vhodne zvoleného identifikátora náš program získa na prehľadnosti atď.
7.8 Definované typy
V deklaračnej časti programu môžeme zaviesť (deklarovať) aj svoje vlastné typy pomocou služobného slova TYPE. Identifikátor typu je vľavo od znaku rovná sa (=) a vpravo bude popis typu, alebo identifikátor typu:
Type | |
| TDen = (Pondelok, Utorok, Streda, Stvrtok, Piatok, Sobota) ; |
| TRok = 1994..2002 ; |
| TLogicky = Boolean ; |
Neskôr ich použijeme pri deklarácií premenných daných typov:
Var | |
| Den : TDen ; |
| L : TLogicky ; |
| Rok : TRok ; |
Nový typ zavádzame (definujeme) z jednej z nasledujúcich dôvodov:
- Bolo by nepohodlné uvádzať tú istú definíciu viackrát.
- Zmenou typu musíme vykonať úpravy na viacerých miestach a tým sa zvyšuje možnosť preklepov.
- Špecifikum jazyka v niektorých miestach vyžaduje definíciu typu.
- Nepáči sa nám pôvodný názov typu.
7.9 Premenné s počiatočnou hodnotou
Const | |
| Rok : Word = 2001 ; |
Premenná Rok má typ Word a počas behu programu sa môže meniť. Jej počiatočná hodnota je 2001. Tieto premenné definujeme po služobnom slove Const. Deklaruje sa tak, že najprv sa napíše jej identifikátor, potom dvojbodka (:), za ňou nasleduje typ danej premennej, potom znak rovná sa (=) za ktorou nasleduje jej počiatočná hodnota, ktorá musí zodpovedať danému typu.
|